import {DatabaseManager} from './DatabaseManager';
import {FieldFiller} from '../types';

/**
 * 字段填充器管理器
 */
export class FieldFillerManager {
  private fieldFillers: Map<string, FieldFiller> = new Map();

  constructor(private db: DatabaseManager) {
  }

  /**
   * 注册字段填充器
   * @param field 字段名
   * @param filler 填充器实例
   * @returns FieldFillerManager实例，支持链式调用
   */
  public register(field: string, filler: FieldFiller): FieldFillerManager {
    this.fieldFillers.set(field, filler);
    return this;
  }

  /**
   * 注册多个字段填充器
   * @param fillers 填充器实例列表
   * @returns FieldFillerManager实例，支持链式调用
   */
  public registers(fillers: Record<string, FieldFiller>): FieldFillerManager {
    for (const [field, filler] of Object.entries(fillers)) {
      this.register(field, filler);
    }
    return this;
  }

  /**
   * 获取字段填充器
   * @param field 字段名
   * @returns 填充器实例，如果不存在则返回undefined
   */
  public get(field: string): FieldFiller | undefined {
    return this.fieldFillers.get(field);
  }

  /**
   * 移除字段填充器
   * @param field 字段名
   * @returns FieldFillerManager实例，支持链式调用
   */
  public remove(field: string): FieldFillerManager {
    this.fieldFillers.delete(field);
    return this;
  }

  /**
   * 清除所有字段填充器
   * @returns FieldFillerManager实例，支持链式调用
   */
  public clear(): FieldFillerManager {
    this.fieldFillers.clear();
    return this;
  }
}
